package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.BuildingEntity;
import com.tfjybj.itoo.teach.model.BuildingModel;
import com.tfjybj.itoo.teach.model.InfoIntegrationTreeModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * BuildingDao接口
 * building表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("buildingDao")
public interface BuildingDao extends BaseMapper<BuildingEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据建筑名称模糊查询building
     *
     * @param name  建筑名称
     * @return 模糊查询的building集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<BuildingEntity> queryLikeName(@Param("name") String name);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */
    /**
     * 根据校区Id查询所有该校区的所有建筑
     *
     * @param schoolBranch 校区Id
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-13 19:34:10
     */
    List<BuildingModel> queryAllBuildings(@Param("schoolBranch") String schoolBranch);

    /**
     * 根据前十条建筑信息
     * @param
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-13 19:34:10
     */
    List<BuildingModel> queryTop10Buildings();

    /**
     * 根据建筑名称查询建筑
     *
     * @param buildingName 建筑名称
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-14 19:34:10
     */
    List<BuildingModel> queryBuildingByName(@Param("buildingName") String buildingName);

    /**
     * 根据建筑类型查询建筑
     *
     * @param buildingType 建筑类型
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-15 19:34:10
     */
    List<BuildingModel> queryBuildingsByType(@Param("buildingType") String buildingType);

    /**
     * 根据建筑名称或类型模糊查询building
     * @param buildingName  建筑名称
     * @param buildingType  建筑类型
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-15 19:34:10
     */
    List<BuildingModel> queryBuildingsLikeNameOrType(@Param("buildingName") String buildingName, @Param("buildingType") String buildingType);

    /**
     * 页面Roommanage加载时查询所有的buildingId
     * @param
     * @return buildingModel
     * @author 段恩刚
     * @since 2.0.0 2018-11-13 19:34:10
     */
    List<BuildingModel> queryAllBuildingIds();

    /**
     * 根据建筑code和建筑名称判断建筑是否已经存在
     * @param buildingCode 建筑code
     * @param buildingName 建筑名称
     * @return 建筑id
     * @author 段恩刚
     * @since 2.0.0 2018/11/27 19:19
     */
    String findIdIsExist(@Param("buildingCode") String buildingCode, @Param("buildingName") String buildingName);

    /**
     * 根据建筑名称获取建筑Id
     *
     * @param buildingName 建筑名称
     * @return buildingId
     * @author 段恩刚
     * @since 2.0.0 2018-11-28 19:34:10
     */
    String queryBuildingIdByName(@Param("buildingName") String buildingName);

    /**
     * 获取树形结构所需所有的数据
     *
     * @param
     * @return list
     * @author 段恩刚
     * @since 2.0.0 2018-11-28 19:34:10
     */
    List<InfoIntegrationTreeModel> queryTreeInfo();

    /**
     * 无参查询Building建筑父节点及建筑信息集合BuildingEntity
     * @return List<BuildingEntity>
     * @auther 智雪艳
     * @since 2019/05/23 19:19
     */
    List<BuildingEntity> findBuilding();
}
